Firebase Cloud Messaging (FCM) দিয়ে Push Notifications

Mobile App Development - ফ্লাটার (Flutter) - Firebase এবং Backend Integration
254

Flutter-এ Firebase Cloud Messaging (FCM) ব্যবহার করে Push Notifications সেটআপ করা বেশ সহজ এবং কার্যকরী। FCM ব্যবহার করে আপনি ব্যবহারকারীর ডিভাইসে রিয়েল-টাইম নোটিফিকেশন পাঠাতে পারেন। এটি সাধারণত চ্যাট অ্যাপ্লিকেশন, ই-কমার্স নোটিফিকেশন, বা অন্যান্য গুরুত্বপূর্ণ ইভেন্টের আপডেট পাঠাতে ব্যবহৃত হয়।

FCM ব্যবহার করে Push Notifications সেটআপ করার ধাপ

ধাপ ১: প্রজেক্ট সেটআপ করা

  1. Firebase Console-এ যান: Firebase Console
  2. একটি নতুন প্রজেক্ট তৈরি করুন (যদি প্রজেক্ট না থাকে)।
  3. Cloud Messaging অপশনটি চালু করুন।
  4. Android এবং iOS অ্যাপ Firebase-এ যুক্ত করুন এবং google-services.json (Android-এর জন্য) এবং GoogleService-Info.plist (iOS-এর জন্য) সঠিকভাবে আপনার প্রজেক্টে যোগ করুন।

ধাপ ২: Flutter প্রজেক্টে firebase_messaging প্যাকেজ যোগ করা

প্রথমে pubspec.yaml ফাইলে firebase_messaging প্যাকেজ যোগ করুন:

dependencies:
  flutter:
    sdk: flutter
  firebase_core: ^2.13.1
  firebase_messaging: ^14.7.3

এরপর flutter pub get কমান্ড চালিয়ে প্যাকেজগুলো ইন্সটল করুন।

ধাপ ৩: Android সেটআপ করা

Flutter-এ Android সেটআপ করার সময় নিশ্চিত করুন যে নিচের ধাপগুলো সঠিকভাবে অনুসরণ করা হয়েছে:

  1. android/build.gradle ফাইলে নিচের ডিপেনডেন্সি যোগ করুন:
dependencies {
    classpath 'com.google.gms:google-services:4.3.15'
}
  1. android/app/build.gradle ফাইলে নিচের লাইনটি যোগ করুন:
apply plugin: 'com.google.gms.google-services'
  1. android/app/src/main/AndroidManifest.xml ফাইলে প্রয়োজনীয় পারমিশন এবং পরিষেবা যোগ করুন:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="your.package.name">
    
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

    <application
        android:name=".YourApplicationName"
        android:label="YourAppName"
        android:icon="@mipmap/ic_launcher">
        
        <!-- FCM এর জন্য এই পরিষেবা যোগ করা -->
        <service
            android:name="com.google.firebase.messaging.FirebaseMessagingService"
            android:exported="true">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT"/>
            </intent-filter>
        </service>

        <!-- ফায়ারবেস ইনিশিয়ালাইজ করতে -->
        <meta-data
            android:name="com.google.firebase.messaging.default_notification_channel_id"
            android:value="high_importance_channel"/>
    </application>
</manifest>

ধাপ ৪: iOS সেটআপ করা

  1. ios/Runner/Info.plist ফাইলে নিচের কনফিগারেশন যোগ করুন:
<key>UIBackgroundModes</key>
<array>
    <string>fetch</string>
    <string>remote-notification</string>
</array>
  1. ios/Podfile এ নিচের লাইন যোগ করুন:
platform :ios, '11.0'

এরপর pod install চালান, যাতে সমস্ত ডিপেনডেন্সি ঠিকমতো ইন্সটল হয়।

ধাপ ৫: Firebase Messaging সেটআপ করা

Flutter অ্যাপ্লিকেশনে Firebase Messaging ইন্সট্যান্স ইনিশিয়ালাইজ করতে হবে এবং ব্যাকগ্রাউন্ড বা ফরগ্রাউন্ড নোটিফিকেশন হ্যান্ডল করতে হবে।

import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_messaging/firebase_messaging.dart';

Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
  // ব্যাকগ্রাউন্ডে নোটিফিকেশন প্রাপ্ত হলে এই মেথড ট্রিগার হবে
  await Firebase.initializeApp();
  print("Handling a background message: ${message.messageId}");
}

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'FCM Push Notification',
      home: NotificationScreen(),
    );
  }
}

class NotificationScreen extends StatefulWidget {
  @override
  _NotificationScreenState createState() => _NotificationScreenState();
}

class _NotificationScreenState extends State<NotificationScreen> {
  late FirebaseMessaging _messaging;
  String _notificationText = 'No Notifications';

  @override
  void initState() {
    super.initState();
    _messaging = FirebaseMessaging.instance;

    // টোকেন প্রিন্ট করা
    _messaging.getToken().then((token) {
      print("FCM Token: $token");
    });

    // ফরগ্রাউন্ডে নোটিফিকেশন হ্যান্ডেল করা
    FirebaseMessaging.onMessage.listen((RemoteMessage message) {
      print('Received a message while in foreground!');
      setState(() {
        _notificationText = message.notification?.title ?? 'No title';
      });
    });

    // যখন ব্যবহারকারী নোটিফিকেশন ক্লিক করে অ্যাপ খুলে
    FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
      print('Notification clicked!');
      setState(() {
        _notificationText = message.notification?.title ?? 'No title';
      });
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Push Notification Example'),
      ),
      body: Center(
        child: Text(
          _notificationText,
          style: TextStyle(fontSize: 20),
        ),
      ),
    );
  }
}

কোডের ব্যাখ্যা

  1. _firebaseMessagingBackgroundHandler: ব্যাকগ্রাউন্ডে নোটিফিকেশন এলে এই ফাংশনটি কল হয়। এটি Firebase ইন্সট্যান্স ইনিশিয়ালাইজ করে এবং মেসেজ হ্যান্ডল করে।
  2. FirebaseMessaging.instance.getToken(): FCM টোকেন প্রাপ্ত করতে ব্যবহার করা হয়, যা সার্ভার থেকে ডিভাইসে নোটিফিকেশন পাঠাতে প্রয়োজন।
  3. FirebaseMessaging.onMessage.listen(): ফরগ্রাউন্ডে নোটিফিকেশন এলে এটি হ্যান্ডল করে।
  4. FirebaseMessaging.onMessageOpenedApp.listen(): যখন ব্যবহারকারী নোটিফিকেশন ক্লিক করে অ্যাপ চালু করে, তখন এটি হ্যান্ডল করা হয়।

ধাপ ৬: Firebase Console থেকে Notification পাঠানো

  1. Firebase Console এ যান এবং আপনার প্রজেক্ট সিলেক্ট করুন।
  2. Cloud Messaging ট্যাব সিলেক্ট করুন।
  3. Send your first message ক্লিক করুন।
  4. একটি টাইটেল এবং মেসেজ দিন, এবং টার্গেট সিলেক্ট করুন (যেমন অ্যাপ টার্গেট বা টোকেন)।
  5. Send বাটন ক্লিক করুন এবং নোটিফিকেশন পাঠান। ডিভাইসে নোটিফিকেশন এলে অ্যাপ্লিকেশন সেটি রিসিভ করবে।

ধাপ ৭: ব্যাকগ্রাউন্ড এবং টার্মিনেটেড স্টেট হ্যান্ডল করা

FirebaseMessaging.onBackgroundMessage() ব্যবহার করে আপনি অ্যাপটি ব্যাকগ্রাউন্ড বা টার্মিনেটেড স্টেটে থাকলেও নোটিফিকেশন হ্যান্ডল করতে পারেন। ব্যাকগ্রাউন্ডে নোটিফিকেশন প্রাপ্ত হলে _firebaseMessagingBackgroundHandler মেথডটি কল হয়।

টিপস:

  • ফরগ্রাউন্ড নোটিফিকেশন: ফরগ্রাউন্ডে নোটিফিকেশন প্রাপ্ত হলে আপনার অ্যাপের UI আপডেট করতে setState() ব্যবহার করুন।
  • Permissions: iOS ডিভাইসে পুশ নোটিফিকেশন সঠিকভাবে কাজ করতে Notification Permissions অনুমতি দিতে হবে। requestPermission() মেথড ব্যবহার করে iOS-এ অনুমতি প্রম্পট করতে হবে।
FirebaseMessaging messaging = FirebaseMessaging.instance;
NotificationSettings settings = await messaging.requestPermission(
  alert: true,
  badge: true,
  sound: true,
);

if (settings.authorizationStatus == AuthorizationStatus.authorized) {
  print('User granted permission');
} else if (settings.authorizationStatus == AuthorizationStatus.provisional) {
  print('User granted provisional permission');
} else {
  print('User declined or has not accepted permission');
}

সারাংশ

  • Flutter-এ FCM ব্যবহার করে আপনি সহজেই Push Notifications সেটআপ করতে পারেন।
  • firebase_messaging প্যাকেজ ব্যবহার করে ফরগ্রাউন্ড, ব্যাকগ্রাউন্ড, এবং টার্মিনেটেড স্টেটে নোটিফিকেশন হ্যান্ডল করা সম্ভব।
  • FCM টোকেন ব্যবহার করে নির্দিষ্ট ডিভাইসে নোটিফিকেশন পাঠানো যায়।
  • Firebase Console থেকে সহজেই নোটিফিকেশন পাঠানো এবং ট্র্যাক করা সম্ভব।

Firebase Cloud Messaging (FCM) ব্যবহার করে আপনি আপনার অ্যাপে রিয়েল-টাইম নোটিফিকেশন এবং ব্যবহারকারীদের ইন্টারঅ্যাকশনের সুযোগ তৈরি করতে পারবেন।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...